package com.qf.factory;

import java.util.Properties;

/**
 * @author 孙亚梅
 * @version V1.0
 * @Project javase2203
 * @Package com.qf.factory
 * @Description:
 * @Date 2022/6/2 9:37
 */

/**
 * 自定义工厂
 */
public class MyBeanFactory {

    private Properties properties = new Properties();

    /**
     * 无参数构造
     */
    public MyBeanFactory() {
    }

    /**
     * 有参数构造
     * @param config 配置文件名字
     */
    public MyBeanFactory(String config) throws  Exception {
        //通过输入流根据配置文件的名字和路径，读取配置文件到peoperties对象中
        properties.load(MyBeanFactory.class.getResourceAsStream(config));
    }

    /**
     * 获取Java类对象，也就是JavaBean对象，对象由这个工厂产生
     * @param beanName
     * @return
     * @throws Exception
     */
    public  Object getBean(String beanName) throws Exception{
        //1：获取类的路径
        //例如：com.qf.service.UserServiceImpl
        String classPath = properties.getProperty(beanName);
        //2:判断这个路径是否为空，如果不为空再用反射获取类对象
        if(classPath != null){
            //3：如果不为空那么使用反射加载类的对象
            Class clazz = Class.forName(classPath);
            //4:虎丘对象的实例返回
            return clazz.newInstance();
        }
        //5:如果为空返回null
        return  null;

    }
}
